package com.mryang.hds.mapper;

import com.mryang.hds.entity.PunchRecord;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @author Genius
 * @version 1.0.0
 * @ClassName PunchRecordMapper.java
 * @Description TODO 打卡记录
 * @createTime 2023年01月16日 20:35:00
 */

@Mapper
public interface PunchRecordMapper {
    // 添加打卡记录
    void addPunchRecord(@Param("uid") int uid,
                        @Param("time")  String time,
                        @Param("dataExc") String dataExc,
                        @Param("temp")  String temp);

    /**
     * 根据用户ID获取指定dataException(健康状态)的数据条数
     * @param userId 用户编号
     * @param dataException 健康状态
     * @return 数据条数
     */
    Integer getPRCountByDataException(@Param("userId") Integer userId,
                                      @Param("dataException") String dataException,
                                      @Param("punchTime") String punchTime);

    List<PunchRecord> getPRCountByDataExceptionDatas(@Param("userId") Integer userId,
                                                     @Param("dataException") String dataException,
                                                     @Param("punchTime") String punchTime);

    /**
     * 获取指定日期 至今 每一天的 打卡情况的 打卡数量
     * @param dataException 打卡状态：健康、异常、未打卡
     * @param punchTime 指定日期
     * @return 数量
     */
    Integer getPRCountByDataExceptionPlus(@Param("dataException") String dataException,
                                          @Param("punchTime") String punchTime);


    /**
     * 获取指定医护人员 所管理用户 当日的健康情况人数
     * @param loginId 医护人员ID
     * @param dataException 健康状态
     * @param time 时间
     * @return 数量
     */
    Integer getPunchByStatusAndPunchInfoAndDocId(@Param("loginId") Integer loginId,
                                                 @Param("dataException") String dataException,
                                                 @Param("time") String time);

    PunchRecord selectPRByUIdandTime(@Param("userId") Integer userId,@Param("time") String time);

    // 根据时间删除所有用户的打卡状态
    void delByPunchTime(@Param("time") String time);

    void deletePunchInfoByTime(@Param("time") String date14DaysAgo);

    // 删除打卡记录
    void delPCCByUId(@Param("userId") Integer userId);


}
